<?php

class User
{
    public $id;
    public $imie;
    public $nazwisko;
    public $adres;
    public $miasto;
    public $pesel;
    
    public function getId() {
        return $this->id;
    }

    public function setId($id) {
        $this->id = $this->prepareData($id);
    }

    public function getImie() {
        return $this->imie;
    }

    public function setImie($imie) {
        $this->imie = $this->prepareData($imie);
    }

    public function getNazwisko() {
        return $this->nazwisko;
    }

    public function setNazwisko($nazwisko) {
        $this->nazwisko = $this->prepareData($nazwisko);
    }

    public function getAdres() {
        return $this->adres;
    }

    public function setAdres($adres) {
        $this->adres = $this->prepareData($adres);
    }

    public function getMiasto() {
        return $this->miasto;
    }

    public function setMiasto($miasto) {
        $this->miasto = $this->prepareData($miasto);
    }

    public function getPesel() {
        return $this->pesel;
    }

    public function setPesel($pesel) {

        if($this->validatePesel($this->prepareData($pesel)))
        {
            $this->pesel = $this->prepareData($pesel);
        }
        else
        {
            echo "Niepoprawny pesel !";
        }
    }
    
    public function prepareData($data)
    {
        $validated = stripslashes(strip_tags($data));
        return $validated;
    }
    
    public function validatePesel()
    {
        if (!preg_match('/^[0-9]{11}$/',$this->pesel)) //sprawdzamy czy ciąg ma 11 cyfr
	{
		return false;
	}
 
	$arrSteps = array(1, 3, 7, 9, 1, 3, 7, 9, 1, 3); // tablica z odpowiednimi wagami
	$intSum = 0;
	for ($i = 0; $i < 10; $i++)
	{
            $intSum += $arrSteps[$i] * $this->pesel[$i]; //mnożymy każdy ze znaków przez wagć i sumujemy wszystko
	}
	$int = 10 - $intSum % 10; //obliczamy sumć kontrolną
	$intControlNr = ($int == 10)?0:$int;
	if ($intControlNr == $str[10]) //sprawdzamy czy taka sama suma kontrolna jest w ciągu
	{
		return true;
	}
        else
        {
            return false;
        }
    }

}

?>